import Vue from 'vue'
// 改模块为 创建一个 大事件的 axios 的小实例
// 导入 整个项目的 router
import router from '@/router/index.js'
// 引入 axios
import axios from 'axios'
// 导入 整个项目的 store
import store from '@/store/index.js'
// 创建 小 axios 并设置跟路径
const instance = axios.create({
  baseURL: 'http://www.liulongbin.top:3008'
})
// 定义请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 为请求头挂载 Authorization 字段
    // startsWith() : 以...开头
    // endsWith() : 以...结尾
    if (config.url.startsWith('/my')) {
      config.headers.Authorization = store.state.Ditem.token
    }
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)
// token 值无效时，清空 token，并强制跳转到登录页
instance.interceptors.response.use(
  response => {
    // 响应状态码为 2xx 时触发成功回调，形参中 response 是 成功结果
    // const { data: res } = response
    // if (response.config.method.toUpperCase() !== 'GET') {
    //   if (response.status !== 0) {
    //     Vue.prototype.$message.success(res.message)
    //   } else {
    //     Vue.prototype.$message.error(res.message)
    //   }
    // }
    return response
  },
  error => {
    // 响应状态码不是 2xx 时触发失败的回调 形参中的 error 是 失败的结果
    if (error.response.status === 401) {
      // 无效的 token
      // 把 vuex 好的 token 重置为空 并跳转到登录页
      Vue.prototype.$message.error('账号验证失效请重新登录')
      store.commit('Ditem/updatedToken', '')
      router.push('/staggerer/logbox/login')
    }
    return Promise.reject(error)
  }
)

export default instance
